package com.oak.broke.model.vip.dto.api;

import com.oak.broke.model.vip.dto.CommonFileDTO;
import lombok.Data;
import org.hibernate.validator.constraints.Length;

import javax.validation.constraints.Min;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.util.List;

/**
 * @author tanghan
 * @Description 保存会员dto
 * @date 2023/04/13/ 15:00:00
 */
@Data
public class SaveVipUserDTO {

    /**
     * 机构/用户code
     */
    @NotBlank(message = "用户code不能为空")
    @Length(max = 32, message = "会员用户code最大长度为32位")
    private String userRelationCode;

    /**
     * 用户类型
     */
    @NotBlank(message = "会员用户类型不能为空")
    @Length(max = 1, min = 1, message = "会员类型长度为1")
    private String vipUserType;

    /**
     * 会员用户名
     */
    @NotBlank(message = "会员用户名不能为空")
    private String vipUsername;

    /**
     * 联系人
     */
    @NotBlank(message = "联系人不能为空")
    private String contacts;

    /**
     * 联系人手机号码
     */
    @NotBlank(message = "联系人手机号码不能为空")
    private String contactsPhone;

    /**
     * 会员等级id
     */
    @NotBlank(message = "会员等级不能为空")
    @Length(max = 32, message = "会员等级id最长32位")
    private String vipLevelId;

    /**
     * 开通时长：按月计算
     */
    @NotNull(message = "会员开通时长不能为空")
    @Min(value = 1, message = "会员开通时长不能少于1个月")
    private Integer renewalDuration;

    /**
     * 续费金额
     */
    private BigDecimal renewalMoney;

    /**
     * 创建人姓名
     */
    @NotBlank(message = "创建人姓名不能为空")
    private String createUsername;

    /**
     * 创建人code
     */
    @NotBlank(message = "创建人code不能为空")
    @Length(max = 32, message = "创建人code不能超过32位")
    private String createUserCode;

    /**
     * 文件
     */
    List<CommonFileDTO> fileList;
}
